Short:    Object-oriented programming language
Author:   Matthias Gietzelt
EMail:    shamane@exmail.de
Uploader: Andreas Gietzelt <endee@t-online.de>
Version:  4.1
Type:     dev/c
Requires: OS 3.5, well-equipped Amiga, some knowledge,
          Amiga Developer CD 2.1 (see below)


        _______   __   __          ___        _______   ___      ___          ___   
       /******/  /**| /**|        /***\      /******/  /***\    /***\        /***\  
      /**____/  /***|/***|       /*__**\    /**____/  /*__**\  /*___*\      /*__**\ 
     /**/___   /*/ |**/|*|      /*/__/*|   /**/___   /*/__/*| |*/   \*|    /*/__/*| 
    /******/  /*/  |_/ |*|     /*******/  /******/  /*******/ |*|   |*|   /*******/ 
   /**____/  /*/       |*|    /*______/  /**____/  /*__**__/  |*|   |*|  /*__**__/  
  /**/___   /*/        |*|   /*/        /**/___   /*/  \*\    \*\___/*/ /*/  \*\    
 /******/  /*/         |*|  /*/        /******/  /*/    \*\    \*****/ /*/    \*\   
/______/  /_/          |_| /_/        /______/  /_/      \_\    \___/ /_/      \_\  


                      The object-oriented programming language

                    Available at www.aminet.de ! (Drawer: dev/c)



Für die deutsche Version, bitte weiter unten lesen....


ENGLISH:


History

2.0  - Initial release
---
2.1  - GadTools gadgets support !!
     - reached to shrink programsize by coding the window-stuff by myself
       instead of making it by ReActor
---
2.2  - Oops..The program crashed, when a clicktab was in a test-window.
     - speed optimizations (e.g. at startup, shutdown etc.)
     - defined catalog-creation
     - C++-Code support
     - added the macro "Preferences-Menu" for Prefs-Programs
     - better & easier generated C-sourcecode
     - minor bugfixes
---
2.3  - prefs-editor rewritten
     - chooseable processortype for generated StormC-project
     - modified programming-help
     - some functionmacros rewritten
     - minor bugfixes
---
3.0  - gadgets-test routine rewritten
     - fixed bugs by showing tapedeck & colorwheel gadgets
     - fixed problems with clicktabs & page gadgets (see "clicktabsexample")
     - added function "Shutdown()" (called, when program quits)
     - added progress-bar while saving
     - added macrofunctions "Emperor_Set/GetGadgetAttrComplex()" (see guide for details)
---
3.1  - fixed a bug when generating source for window with colorwheel
     - source is now *more* SAS/C friendly
     - fixed a silly bug when copy a function from programming help into texteditor
     - added online help for macrofunctions (see chapter Programming Help for details)
     - added ARexx-connection to StormC (Scripts - Dir)
     - added arguments by starting StormC (e.g. GoldED support for StormC)
     - added loading picture
---
3.2  - added parametry of several image-gadgets (bevel, bitmap, glyph)
       (see "ClicktabExample" for details)
     - fixed a bug with slider and getfile-gadgets
     - fixed problem with requester-body-text ["\n" (Newline) will be recognized now]
     - rewritten routine for adding, moving (up and down) and removing of objects in a list
---
3.5  - showing of scroller & slider-gadgets fixed
     - layout-gadget (bevelstyle & -state) doesn't switch back to previous setted
       values anymore
     - added support of finnish catalog
     - added program-environment for configuration of version, program name,
       stack, mem and many more
     - deleting windows is possible now
     - when pages were added to gadgetlist, its generation was incorrect
     - added gadgethelp support - just connect a gadget to configure ! (program-environment)
     - added function <Menu-Edit-Clearlist> to reset current list of objects
     - label's Locale-connection works correct now
     - gadgethelp for nearly every gadget
     - added chooseable HookType for string-gadgets
     - added some initial-configurations for texteditor-gadgets
     - moving Locale-entrys is possible now
     - editing the includelist is also possible now
     - added new startup-picture (thanks to Janne Peräaho)
---
3.6  - Gradientsliders horiz/vert orientation works correct now
     - some global variables problems fixed
     - problems with node-array fixed
     - special positions/sizes for OS 2.0 windows work now
     - chooseable smallfont for large lists
     - fixed crash when moving a test-window
     - modifyable library-integration for your project
     - fixed bug in installer-script (doesn't notice, if an OS higher than 3.5 was installed)
     - added interconnection maps
     - generating source based on AmigaOS 2.0, AmigaOS 3.5+ or mixed code
---
4.0  - DONE ! the whole code is rewritten and structured ! only 4 MBytes of systemmemory
       is needed !
     - the programflow maybe changed a bit to a better, because also all low-level
       functions were rewritten
     - the look has changed a bit
     - menu is more complex and professional
     - expanded GadTools-handling (with RightMouseButton)
---
4.1  - added french catalog (written by Olivier Martin -- thank you !)
     - added translations for predefined menus and requests
     - added attributes for texteditor-, speedbar- and space-gadget
     - new special requester-kind (in Reaction-style)
     - ARexx-script changed/fixed problem while transfering projects
     - removed fix-positions for attribute-windows
     - fixed problem with preview-menu (no wrong additional menuitems anymore)
     - added array for speedbar buttons
     - fixed problems with arrays
     - enlarged edges around GadTools-gadgets for resizing
     - path to includes and libs configurable
     - layout of mainwindow changed (no overlapping gadgets anymore)
     - added requester, if choosing menuitem "New"
     - fixed a bug in menuitem "New"
     - fixed a bug in menuitem "Delete"
     - bugs within generated code were fixed
     - chooseable generation of macrofunctions
     - generated code much smaller while leaving out unused macrofunctions and restructuring it
       (ca. 40 % smaller)
     - chooseable initial opened window for your project
     - fixed bug in source, when there was just one gadget in a list
     - added possibility to create a directory containing the current project
     - bug while opening old projects containing a slider fixed
     - chooseable locale-datafile creation
     - chooseable storm-projectfile creation
     - texteditor changes are recognized before saving
     - saving of strings containing a linefeed ('\n') is no problem anymore
     - opened amigaguide.library because of some initialization-bugs


Introduction

Thanks for decrunching and the will to testing the program-packet.
This program should "revolutioning" the software-development on Amiga.

Object-oriented programminglanguage (OOP) is maybe a bit too high for that
program, because there are "real" C/C++-sourcecodes generated and
an external C/C++-Compiler must translate it into machine-code. In the Amiga-sphere
there are only less applications like CanDo, Storm-Wizard and so on, but one day
I have seen the program "Delphi" on the PC :( ! This OOP is exclusive controlable
in Pascal (that set's me up) and it has millions of configuration-possibilities.
I didn't knew such things on Amiga, and so I made it by myself.

I want to make parameting of the Graphical User Interface (GUI) and its macro-elements as easy as
possible.
Following standard-GUI-elements are implemented:
 * requests
 * ASL-requests
 * menus
 * Locale-catalogs
 * OS2.0 gadgets (GadTools)
 * OS3.5 gadgets (Reaction)
 * windows
Following NON-GUI-elements are implemented:
 * function-macros, which makes programming under OS3.5+ more easily
 * includes
 * declare variables
 * library-opening
 * InterConnection maps between gadgets
 * create list-arrays for gadgets

With Emperor you are generating a complete C/C++-sourcecode, which only must be
compiled by an external compiler (e.g. StormC from the developer CD2.1).

Aim of this program is to assure software developer to create their programs (its sourcecode)
by Emperor, because the making of software (opening of windows, file- and fontrequests,
menus etc.) is often equal and must not longer copied by programmers from other sourcecodes.
Emperor decrees about one or more macros for every GUI-element. Like the menus:
here you must, for creating the complete Project-menu (open, close, save, print etc.) and its
translation, (in Locale-".catalog"-file) only select the corresponding entry in the list.
This is also possible with requests e.g. by making a QuitRequest. These are called in
the own sourcecode as function "REQUESTNAME();".

But the program should also be for amigans, who never programmed before,
and bade an easy way in the programming of AmigaOS-GUIs.


Systemrequirements

  - an Amiga ;-)
  - Memory at least 4 MByte; recommended 16 MByte or more
  - Workbench version 3.5 or higher
  - Processor at least 68020; recommended 68060
  - Amiga Developer CD 2.1 of the HAAGE & Partner GmbH
  - C/C++-Compiler (from the developer CD "ADCD_2.1:Contributions/Haage_&_Partner/StormC/")
  - CatComp (from the developer CD "ADCD_2.1:NDK/NDK_3.5/Tools/CatComp")


DEUTSCH:


Die Geschichte

2.0  - Erste Veröffentlichung
---
2.1  - AmigaOS 2.0 Gadgets hinzugefügt !!
       (GadTools-Gadgets sind nun verfügbar !)
     - Programm ist durch Code-Umsetzung von ReActor nach eigenem Code geschrumpft.
---
2.2  - Programmabsturz, wenn Clicktab-Gadgets in einem Test-Fenster waren.
     - Geschwindigkeitsoptimierungen (z.B. beim Start, Ende etc.)
     - definierte Catalog-Erstellung
     - Makro "Preferences-Menü" für Einstellungs-Programme
     - C++-Quelltext Unterstützung
     - besserer & einfacherer generierter C-Quelltext
     - minimale Fehler behoben
---
2.3  - Prefs-Editor überarbeitet
     - wählbarer Prozessortyp für generierten StormC-Projekt
     - modifizierte Programmierhilfe
     - diverse Funktionsmakros überarbeitet
     - minimale Fehler behoben
---
3.0  - Gadget-Test Routine überarbeitet
     - Fehler beim Anzeigen von Tapedeck & Colorwheel Gadgets behoben
     - Probleme mit Clicktabs & Page Gadgets behoben (siehe "clicktabsexample")
     - Funktion "Shutdown()" hinzugefügt (Aufruf, bei Programmende)
     - Fortschrittsanzeige während des Speicherns
     - Makrofunktion "Emperor_Set/GetGadgetAttrComplex()" hinzugefügt
       (siehe Emperor.guide)
---
3.1  - Fehler beim Quelltextgenerieren mit ColorWheels behoben
     - Quelltext ist nun SAS/C freundlich*er*
     - Fehler beim Kopieren einer Funktion von der Programmierhilfe in den Texteditor behoben
     - Online Hilfe für Makrofunktionen hinzugefügt (siehe Kapitel Programmierhilfe)
     - ARexx-Verbindung zu StormC (Scripts - Verzeichnis)
     - Argumente beim Starten von StormC hinzugefügt (z.B. GoldED support für StormC)
     - Ladebild hinzugefügt
---
3.2  - diverse Image-Gadgets (Bevel, Bitmap, Glyph) hinzugefügt
       (siehe "ClicktabExample" für Einzelheiten)
     - Fehler mit Slider und Getfile-Gadgets behoben
     - Problem mit dem Requester-Body-Text behoben ["\n" (Newline) wird nun berücksichtigt]
     - Routine für hinzufügen, verschieben (hoch und runter) und löschen von Objekten
       in den Listen überarbeitet
---
3.5  - Anzeigen des Scroller & Slider-Gadgets ist überarbeitet worden
     - Layout-Gadget (BevelStyle & -State) springt nicht mehr zu zuvor eingestellten
       Werten zurück
     - Finnischen Katalog hinzugefügt
     - Programmumgebung zur Konfiguration von Version, Programmnamen, Stack, Speicher
       und vielem, vielem mehr hinzugefügt
     - löschen von Fenstern ist nun möglich
     - wenn Pages hinzugefügt wurden, waren deren Generationen inkorrekt
     - GadgetHelp hinzugefügt - einfach ein Gadget verbinden, um die GadgetHelp zu
       konfigurieren ! (Programmumgebung)
     - Funktion <Menü-Bearbeiten-Liste löschen> für das Zurücksetzen der aktiven Liste von
       Objekten hinzugefügt
     - Label's Locale-Verbindung arbeitet nun korrekt
     - GadgetHelp für beinahe jedes Gadget
     - wählbarer HookType für String-Gadgets
     - diverse Initial-konfigurationen für Texteditor-Gadgets hinzugefügt
     - verschieben von Locale-Einträgen ist nun möglich
     - editieren der Includeliste ist nun möglich
     - neues Startupbild hinzugefügt (Dank an Janne Peräaho)
---
3.6  - Gradientsliders horiz/vert Ausrichtung arbeitet nun korrekt
     - einige Probleme mit globalen Variablen behoben
     - Probleme mit Node-Arrays behoben
     - spezielle Positionen/Größen für OS 2.0 Fenster arbeiten nun korrekt
     - wählbarer Smallfont für komplexe Listen (Texteditor/Programmierhilfe)
     - Fehler behoben beim verschieben vom Vorschaufenster
     - veränderbare Library-Integration für das eigene Projekt
     - Fehler behoben im Installer-Skript (arbeitet jetzt mit OS-Versionen >3.5 zusammen)
     - Interconnection Maps hinzugefügt (Verknüpfung von Gadgets)
     - Quelltextgenerierung auf Basis von AmigaOS 2.0, AmigaOS 3.5+ oder gemischt
---
4.0  - GESCHAFFT ! der gesamte Quelltext ist neugeschrieben, strukturiert und überarbeitet !!
       nur noch 4 MBytes Systemspeicher sind für den Start von Emperor notwendig !
     - der Programmfluß hat sich teilweise geändert, weil auch alle low-level Funktionen
       neugeschrieben wurden.
     - neuer Look
     - komplexeres und professionelleres Menü
     - erweitertes GadTools-handling (mit RechtemMausButton)
---
4.1  - französischen Katalog hinzugefügt (geschrieben von Olivier Martin -- besten Dank !)
     - Übersetzungen für vorgefertigte Menüs und Gadgets hinzugefügt
     - Attribute für Texteditor-, Speedbar- und Space-gadget hinzugefügt
     - neuer spezieller Requestertyp (im Reaction-Stil)
     - ARexx-Skript verändert/Probleme während des Transfers von Projekten beseitigt
     - fixe Positionen für Attribut-Fenster beseitigt
     - Problem mit Vorschau-Menü behoben
     - Array für Speedbar-Buttons hinzugefügt
     - Probleme mit Arrays beseitigt
     - Justierungsflächen um GadTools-Gadgets vergrößert
     - Pfad zu Includes und Libs konfigurierbar
     - Layout des Hauptfensters verändert (keine überlappenden Gadgets mehr)
     - Requester hinzugefügt, wenn Menüpunkt "Neu" gewählt wird
     - Fehler im Menüpunkt "Neu" behoben
     - Fehler im Menüpunkt "Löschen" behoben
     - wählbare Makrofunktionsgenerierung
     - generierter Quelltext durch Herauslassen unbenutzter Makrofunktionen und Restrukturierung
       wesentlich kleiner (ca. 40 %)
     - initial geöffnetes Fenster für eigenes Projekt wählbar
     - Fehler im generierten Quelltext bei nur einem Gadget beseitigt
     - spezifische Projekt-Verzeichnisse erstellbar
     - Fehler während des Öffnens alter Projekte, die einen Slider enthielten, behoben
     - Erstellung von Locale-dateien wählbar
     - Erstellung von Storm-projekten wählbar
     - Texteditor verarbeitet Änderungen nun korrekt
     - speichern von Zeichenketten mit einem linefeed ('\n') ist kein Problem mehr
     - amigaguide.library wegen Startschwierigkeiten geöffnet


Die Einführung

Vielen Dank, daß Sie dieses Programm entpackt haben und ausprobieren möchten !
Dieses Programm soll die Software-Entwicklung auf dem Amiga "revolutionieren".

Objekt-orientierte Programmiersprache (OOP) ist vielleicht ein wenig
zu hoch gegriffen, da weiterhin "echte" C/C++-Quelltexte generiert und
durch einen externen C/C++-Compiler übersetzt werden müssen. Im Amiga-Bereich
gibt's nur wenige Ausnahmen wie CanDo, Storm-Wizard u.a., aber irgendwann habe
ich das Programm "Delphi" auf dem PC :( kennengelernt ! Diese OOP ist
ausschließlich in Pascal gehalten (was mich arg störte) und erschlägt einen
mit den Millionen Konfigurations-möglichkeiten. Ich kannte soetwas in der Art
bisher auf dem Amiga nicht, und kurzentschlossen setzte ich mich selbst daran.

Ich wollte die Parametrierung der Oberfläche und der Makro-Elemente so einfach wie
möglich machen.
Folgende Standard-Oberflächenelemente sind implementiert:
 * Requester
 * ASL-Requester
 * Menüs
 * Locale-Katalog
 * OS2.0 Gadgets (GadTools)
 * OS3.5 Gadgets (Reaction)
 * Fenster
Folgende Nicht-Oberflächenelemente sind implementiert:
 * vorgefertigte Funktionsmakros, die das Programmieren unter OS3.5 wesentlich erleichtern.
 * Includes
 * Deklarieren von Variablen
 * definierbare Einbindung vonFuntions-Bibliotheken
 * InterConnection Maps zwischen Gadgets
 * Datenfelder für Listen von Gadgets

Man generiert mit Emperor einen komplett fertigen C/C++-Quelltext, der nur noch
durch einen externen Compiler (z.B. StormC auf der Developer CD2.1) übersetzt werden muß.

Ziel dieses Programms soll sein, Softwareentwickler zu überzeugen mit Emperor ihre
Programme (deren Quelltext) zu erstellen, da die Verfahrensweise bei der Erstellung
von Software (Öffnen von Fenstern, Datei- und Schriftauswahlrequestern, Menüs etc.)
oft gleich ist und nicht weiter durch den Programmierer selbst mühsam aus anderen
Quelltexten herausgefischt werden muß. Emperor verfügt für jedes Element schon
ein oder mehrere vorgefertigte, aber veränderbare, Makros. So z.B. bei den Menüs:
hier muß für das Projekt-Menü (Öffnen, Speichern, Drucken etc.) und dessen
Übersetzung (für Locale - ".catalog"-Datei) nur der entsprechende Eintrag
gewählt werden. Dies gilt auch für Requester z.B. für das QuitRequest. Diese müssen
nur noch im eigenen Quelltext als Funktion "REQUESTERNAME();" aufgerufen werden.

Das Programm soll aber auch für Amiganer sein, die noch nie programmiert haben,
und so einen einfachen Einstieg in die Programmierung der AmigaOS-Oberfläche bieten.


Die Systemanforderungen

  - einen Amiga ;-)
  - Speicher mindestens 4 MByte; empfohlen 16 MByte oder mehr
  - Workbench Version 3.5 oder höher
  - Prozessor mindestens 68020; empfohlen 68060
  - Amiga Developer CD 2.1 von der HAAGE & Partner GmbH
  - C/C++-Compiler (von der Developer CD "ADCD_2.1:Contributions/Haage_&_Partner/StormC/")
  - CatComp (von der Developer CD "ADCD_2.1:NDK/NDK_3.5/Tools/CatComp")
